export const authList = [{
  'id': '1',
  'label': 'ALL',
  'desc': '最大权限',
  'children': [
    {
      'id': '12',
      'label': 'DDIO',
      'desc': '一级菜单',
      'children': [
        {
          'id': '121',
          'label': 'DDIO组织架构',
          'desc': '二级菜单',
          'children': [],
        },
        {
          'id': '122',
          'label': '用户管理',
          'desc': '二级菜单',
          'children': [],
        },
        {
          'id': '123',
          'label': 'DDIO同步配置',
          'desc': '二级菜单',
          'children': [],
        },
      ],
    },
    {
      'id': '13',
      'label': '通知消息',
      'desc': '一级菜单',
      'children': [],
    },
    // {  // 2020-09-24 管理员菜单显示 账户管理可选，但是除了超管无法查看，所以不予显示
    //   'id': '14',
    //   'label': '账户管理',
    //   'desc': '一级菜单',
    //   'children': [],
    // },
    {
      'id': '15',
      'label': '设置',
      'desc': '一级菜单',
      'children': [
        {
          'id': '151',
          'label': '基础信息',
          'desc': '二级菜单',
          'children': [],
        },
        {
          'id': '153',
          'label': '配置管理员角色',
          'desc': '二级菜单',
          'children': [],
        },
      ],
    },
    // {
    //   'id': '16',
    //   'label': '控制台',
    //   'desc': '一级菜单',
    //   'children': [
    //     {
    //       'id': '161',
    //       'label': '运行日志',
    //       'desc': '二级菜单',
    //       'children': [],
    //     },
    //     {
    //       'id': '162',
    //       'label': '日志级别切换',
    //       'desc': '二级菜单',
    //       'children': [],
    //     },
    //     {
    //       'id': '163',
    //       'label': '客户端日志',
    //       'desc': '二级菜单',
    //       'children': [],
    //     },
    //     {
    //       'id': '164',
    //       'label': '定时任务管理',
    //       'desc': '二级菜单',
    //       'children': [],
    //     },
    //   ],
    // }
  ],
}];

/**
 * 获取单个路由所有父级id(包括自己的id)
 * @param {Array} array 路由权限列表
 * @param {String} id 单个路由授权号
 **/
function getRouteParentIdsById(array, id) {
  const stack = [];
  let going = true;
  const walker = (array, id) => {
    array.forEach(item => {
      if (!going) return;
      stack.push(item['id']);
      if (item['id'] === id) {
        going = false;
      } else if (item['children']) {
        walker(item['children'], id);
      } else {
        stack.pop();
      }
    });
    if (going) stack.pop();
  };
  walker(array, id);
  return stack;
}
/**
 * 获取当前用户路由权限ids
 * @param {Array} array 路由权限列表
 * @param {Array} ids 用户路由授权号列表
 **/
export function getRouteAuths(array, ids) {
  let stack = [];
  ids.forEach(id => {
    stack = [].concat(stack, getRouteParentIdsById(array, id));
  });
  return [...new Set(stack)];
}
